import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;

public class main {

	public static void main(String[] args) throws IOException
	{
//		byte[] byteAr = new byte[4];
//		byteAr[0] = 0x78;
//		byteAr[1] = 0x56;
//		byteAr[2] = 0x34;
//		byteAr[3] = 0x12;
//		ByteArrayInputStream bais = new ByteArrayInputStream(byteAr);
//		DataInputStream dis = new DataInputStream(bais);
//		System.out.println(Integer.toHexString(dis.readInt()));
		
		String fileName = "D:\\workspace\\OpenProject\\bitbucket\\tutorial\\AssetManager\\AssetMerge\\bin\\Debug\\dczg.dat";
	
//        try {
//            System.out.println("以字节为单位读取文件内容，一次读一个字节：");
//            // 一次读一个字节
//            in = new FileInputStream(file);
//            int tempbyte;
//            while ((tempbyte = in.read()) != -1) {
//                System.out.write(tempbyte);
//            }
//            in.close();
//        } catch (IOException e) {
//            e.printStackTrace();
//            return;
//        }
//        try {
//            System.out.println("以字节为单位读取文件内容，一次读多个字节：");
//            // 一次读多个字节
//            byte[] tempbytes = new byte[4];
//            int byteread = 0;
//            in = new FileInputStream(fileName);
//            showAvailableBytes(in);
//            // 读入多个字节到字节数组中，byteread为一次读入的字节数
//            while ((byteread = in.read(tempbytes)) != -1) {
//                System.out.write(tempbytes, 0, byteread);
//                break;
//            }
//            System.out.println("\nxxxxxxxxxxx");
//            System.out.println(byteToInt2(tempbytes));
//            
//        } catch (Exception e1) {
//            e1.printStackTrace();
//        } finally {
//            if (in != null) {
//                try {
//                    in.close();
//                } catch (IOException e1) {
//                }
//            }
//        }
       readFileByRandomAccess(fileName);   
	}
	
	 public static void readFileByRandomAccess(String fileName) {  
         RandomAccessFile randomFile = null;  
         try {  
             System.out.println("随机读取一段文件内容：");  
             // 打开一个随机访问文件流，按只读方式  
             randomFile = new RandomAccessFile(fileName, "r");  
             // 文件长度，字节数  
             long fileLength = randomFile.length();  
             // 读文件的起始位置  
             int beginIndex = (int)fileLength - 4;  
             // 将读文件的开始位置移到beginIndex位置。  
             randomFile.seek(beginIndex);  
             byte[] bytes = new byte[4];  
             int byteread = 0;  
             // 一次读10个字节，如果文件内容不足10个字节，则读剩下的字节。  
             // 将一次读取的字节数赋给byteread  
             while ((byteread = randomFile.read(bytes)) != -1) {  
                 System.out.println(byteToInt2 (bytes));  
             }  
         } catch (IOException e) {  
             e.printStackTrace();  
         } finally {  
             if (randomFile != null) {  
                 try {  
                     randomFile.close();  
                 } catch (IOException e1) {  
                 }  
             }  
         }  
     }  
	
	private static void showAvailableBytes(InputStream in) {
        try {
            System.out.println("当前字节输入流中的字节数为:" + in.available());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
	
	public static int byteToInt2(byte[] b) {  
		  
        int mask=0xff;  
        int temp=0;  
        int n=0;  
        for(int i=0;i<4;i++){  
           n<<=8;  
           temp=b[i]&mask;  
           n|=temp;  
       }  
        return n;  
}
}
